//
//  StatusTableViewCell.swift
//  SinaWeibo
//
//  Created by 胡阳 on 16/5/31.
//  Copyright © 2016年 young4ever. All rights reserved.
//

import UIKit
import SDWebImage

enum StatusTableViewCellType : String {
    
    case Normal = "NormalCell"   // 原创微博
    case Forward = "ForwardCell" // 转发微博
    
    // 在swift的枚举中使用static修饰方法就相当于一个类中使用class来修饰方法
    // 如果调用枚举值的rawValue就相当于拿到枚举值的原始值
    static func cellType(status: Status) -> String {
    
        return status.retweeted_status != nil ? Forward.rawValue : Normal.rawValue
    }
}

class StatusTableViewCell: UITableViewCell {
    
    /// 图片宽度约束
    var pictureWidthCons : NSLayoutConstraint?
    
    /// 图片高度约束
    var pictureHeightCons : NSLayoutConstraint?
    
    /// 图片顶部约束
    var pictureTopCons : NSLayoutConstraint?
    
    /// 数据模型
    var model : Status?{
        didSet{
            // 设置顶部视图数据
            topView.status = model
            // 内容
            contentLabel.text = model?.text
            
            // 1计算配图尺寸
            // 必须先给status赋值, 因为后面计算尺寸会用到status
            pictureView.status = model?.retweeted_status != nil ? model?.retweeted_status : model
            
            let size = pictureView.calculateImageSize()
            // 1.1设置配图的尺寸
            pictureWidthCons?.constant = size.width
            pictureHeightCons?.constant = size.height
            pictureTopCons?.constant = (size.height == 0) ? 0 : 10
        }
    }
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        selectionStyle = UITableViewCellSelectionStyle.None
        // 初始化子控件
        setupSubViews() 
    }
    
    // MARK: - 初始化子控件
    func setupSubViews()
    {
        //1.添加子控件
        contentView.addSubview(topView)
        contentView.addSubview(contentLabel)
        contentView.addSubview(pictureView)
        contentView.addSubview(footerView) 
        
        //2.布局子控件
        let width = UIScreen.mainScreen().bounds.width
        topView.xmg_AlignInner(type: XMG_AlignType.TopLeft, referView: contentView, size: CGSize(width: width - 20,height: 60))
        contentLabel.xmg_AlignVertical(type: XMG_AlignType.BottomLeft, referView: topView, size: nil, offset: CGPoint(x: 10, y: 10))
        
        footerView.xmg_AlignVertical(type: XMG_AlignType.BottomLeft, referView: pictureView, size: CGSize(width: width ,height: 44), offset: CGPoint(x: -10, y: 10))
    }    
    
    // MARK: - 工具
    /**
     返回cell的行高
     */
    func rowHeight(model: Status) -> CGFloat
    {
        self.model = model ;
        
        self.layoutIfNeeded()
        
        return CGRectGetMaxY(footerView.frame)
    }
    
    // MARK: - 懒加载控件
    /// 顶部封装的视图<头像, 用户名, 时间 , 来源...>
    private lazy var topView : StatusTableCellTopView = StatusTableCellTopView()
    
    /// 正文内容
    lazy var contentLabel: UILabel = {
        
        let lb = UILabel.fastCreateLabel(UIColor.darkGrayColor(), fontSize: 14)
        lb.numberOfLines = 0
        lb.preferredMaxLayoutWidth = UIScreen.mainScreen().bounds.size.width - 20 
        return lb
    }()
    
    /// 图片视图
    lazy var pictureView: StatusTableCellPictureView = StatusTableCellPictureView()
    
    ///  底部工具条
    lazy var footerView : StatusTableCellBottomView = StatusTableCellBottomView()
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}



 
